干货 | 几行代码就能撸一个文档注册Dapp,一文学会以太坊Dapp开发
伟大的事情都很简单,而且大多数都可以被凝结成几个词:自由,正义,荣誉,责任,仁慈,希望。——温斯顿·丘吉尔
区块链能为你做什么?
区块链数据储存是去中心化的、稳定的、不可变的。
“去中心化的”意味着数据储存在不同人员的硬件上共同运行。“稳定的”意味着即使一些参与者离开或者终止合作,数据储存也仍将继续运行。“不可变的”意味着一旦数据被储存在区块链中,它将无法被更改。
区块链以一种优雅的方式解决了文档注册表问题。一旦我们在区块链注册表中签了名,我们就不必担心文档和签名会被篡改。要想做到这一点,大多数参与者必须就这一变化达成一致意见,那这就不能算是什么秘密了。
与此同时,没有任何人有权以提供此服务的方式收取酬金,参与者们可以自己提供这项服务。
在这种情况下,文档可以是任何数据集。同样的模型也适用于验证任何商业交易、IoT(物联网)数据集或用户身份等数据的真实性。
还是那句话:区块链以一种优雅的方式解决了文档注册表问题。一旦我们记录了签名,它就无法被篡改了。
如果我是在2016年写这篇文章的话,我可以执行大约一百行代码,然后给出一份二十多页的白皮书,并为一个项目筹集数百万美元(https://vinchain.io/)。这一模型的应用是无穷无尽的,也的确有很多人抓住了这个机会。
执行
这次我没有从头开始编写合约代码。因为我一般不会做重复的工作,而区块链注册表已经被创建过十几次了。谷歌一键搜索就能找到 GitHub repo(https://github.com/nakov/Ethereum-Web3-Document-Registry-Demo),我将用它来展示该模型是如何运作的。即使它使用的是老版的solidity,它仍然可以很好的工作,而且你可以自己测试一下(感谢Svetlin!)。
这个合约非常简单,只有一个相关的合约变量和两个函数。
文档映射表把为文档计算的hash散列与添加它的区块链接起来。一个添加方法(add method)需要一个hash散列,并且将其储存在映射表中。一个验证方法(verifiy method)返还一个hash散列的时间戳。
这就是实现去中心化文档注册表的全部内容,该注册表做了两件事情:
签署文档;
验证文档自上次记录签名后是否发生过改变;
这种方法之所以有效,是因为两个不同的文档具有相同签名的概率几乎为零。如果你能得到时间戳,那么你就可以确定你提供的文档是在哪个时间被导入到注册表中的。
当然,合约代码是可以被更新和改进的,但这17行核心代码仍然是正确的。
总结
文档注册表是具有商业价值的区块链应用程序中最容易实现的一个应用程序。在2016年,本文中的几行代码就足以助力一个百万美元的项目。如今,它们仍然能在更复杂的解决方案中反复使用。
文档注册表有效地利用了区块链的去中心化性和不变性这两个属性,从而不需要依赖其他人来证明数据的真实性。这个想法非常简单,但却是具有革命意义的。
你是否想尝试一下?或有什么想法,可以在留言区告诉我们哦~
推荐阅读:
猛戳"阅读原文"有惊喜哟
老铁在看了吗?👇